package com.qst.order.service.Impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qst.order.domain.Pay;
import com.qst.order.mapper.PayMapper;
import com.qst.order.service.PayService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;

@Slf4j
@Service
public class PayServiceImpl extends ServiceImpl<PayMapper, Pay> implements PayService {

    @Autowired
    private PayMapper payMapper;

    @Override
    public IPage<Pay> queryUserFlows(String username, Integer page, Integer pageSize, LocalDateTime startDate, LocalDateTime endDate) {
        // 1. 构建分页对象
        Page<Pay> pageParam = new Page<>(page, pageSize);

        // 2. 构建查询条件（核心：只能查询当前用户的流水，避免越权）
        QueryWrapper<Pay> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("username", username); // 强制筛选当前用户


        // 4. 时间范围筛选（如传入开始时间，查询>=开始时间的数据）
        if (startDate != null) {
            queryWrapper.ge("pay_time", startDate);
        }
        // 如传入结束时间，查询<=结束时间的数据（注意：包含当天23:59:59）
        if (endDate != null) {
            queryWrapper.le("pay_time", endDate.plusDays(1).minusNanos(1));
        }

        // 5. 按交易时间倒序（最新的流水排在前面）
        queryWrapper.orderByDesc("pay_time");

        // 6. 分页查询
        return payMapper.selectPage(pageParam, queryWrapper);
    }
}
